package chances.wechat.repository;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Repository;

import chances.wechat.entity.UserRequest;

@Repository
public class UserRequestRepository extends BaseRepository {
	
	/**
	 * 插入用户消息
	 * @param request
	 */
	public void insertRequest(UserRequest request) {
		String name = this.getNamespaceM("insertUserReq");
		this.sqlSessionTemplateMaster.insert(name, request);
	}

	/**
	 * 读取机顶盒未处理消息
	 * @param stbNo
	 * @param lastTime
	 * @return
	 */
	/*public List<UserRequest> fetchRequest(String stbNo, Date lastTime) {
		List<UserRequest> reqs = this.loadRequest(stbNo, lastTime);
		if (!reqs.isEmpty()) {
			this.batchUpdateReadTime(reqs);
		}
		return reqs;
	}*/
	
	/**
	 * 更新读消息的时间设置为已读状态
	 */
	/*public void updateReadTime(Long id) {
		String name = this.getName("updateUserReqReadTime");
		this.sqlSessionTemplate.update(name, id);
	}*/
	
	/**
	 * 更新处理消息时间设置状态为已处理
	 * @param id
	 */
	/*public void updateExecuteTime(Long id) {
		String name = this.getNamespaceM("updateUserReqExecTime");
		HashMap<String, Object> params = new HashMap<String, Object>();
		params.put("id", id);
		this.sqlSessionTemplateMaster.update(name, params);
	}*/

	/**
	 * 查询盒子未处理消息
	 * @param stbNo
	 * @param lastTime
	 * @return
	 */
	/*public List<UserRequest> loadRequest(String stbNo, Date lastTime) {
		String name = this.getName("selectUserReq");
		HashMap<String, Object> params = new HashMap<String, Object>();
		params.put("stbNo", stbNo);
		params.put("lastTime", lastTime);
		return this.sqlSessionTemplate.selectList(name, params);
	}*/
	
	/**
	 * 批量更新消息为已读
	 * @param requests
	 */
	/*public void batchUpdateReadTime(List<UserRequest> requests) {
		String name = this.getNamespaceM("batchUpdateUserReqReadTime");
		this.sqlSessionTemplateMaster.update(name, requests);
	}*/
	
	/**
	 * 批量处理消息为已处理
	 * @param ids
	 */
	/*public void batchExecuetTime(List<Long> ids) {
		String name = this.getNamespaceM("batchUpdateUserExecTime");
		this.sqlSessionTemplateMaster.update(name, ids);
	}*/
	
	/**
	 * 查询盒子最后一次消息
	 * @param stbNo
	 * @return
	 */
	/*public UserRequest getLastCmdByStb(String stbNo) {
		String name = this.getName("getLastUserReq");
		return this.sqlSessionTemplate.selectOne(name, stbNo);
	}*/
	
	/**
	 * 获取用户消息
	 * @param lastTime
	 * @return
	 */
	/*public List<UserRequest> loadRequest(Date lastTime) {
		String name = this.getName("selectUnreadUserReq");
		List<UserRequest> reqs = this.sqlSessionTemplate.selectList(name,
				lastTime);
		return reqs;
	}*/
	
	/**
	 * 获取用户消息并更新为已读状态
	 * @param lastTime
	 * @return
	 */
	/*public List<UserRequest> fetchRequest(Date lastTime) {
		String name = this.getName("selectUnreadUserReq");

		List<UserRequest> reqs = this.sqlSessionTemplate.selectList(name,
				lastTime);
		if (!reqs.isEmpty()) {
			this.batchUpdateReadTime(reqs);
		}
		return reqs;
	}*/

	
	/**
	 * 批量删除
	 * @param userId 用户id
	 * @param type  类型
	 * @param codes 内容Code
	 */
	public void delPlayByUserAndCodes(String userId, String type,String[] codes) {
		String name = this.getNamespaceM("delPlayByUserAndCodes");
		Map<String ,Object> params = new HashMap<String,Object>();
		params.put("userId", userId);
		params.put("cmd", type);
		params.put("codes", codes);
		this.sqlSessionTemplateMaster.delete(name,params);
	}
	
}
